iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
1
Modern Web

用Elixir學習後端煉金術系列 第 4

Day 4 |> 集合資料型態 ( Collection ) - Tuple (元組)

  • 分享至 

  • xImage
  •  

元組 (Tuple)


元組是一組固定大小的記憶體空間,用大括號包裹,裡面可存放種型態的資料,並且與其他語言的陣列一樣,讀取所花的時間是O(1)。

iex(1)> {}
{}
iex(2)> {"haha", :hehe, 100}
{"haha", :hehe, 100}

原則上元組常用在函式的返回值。例如成功時可能會返回{:ok, result},錯誤或例外發生時返回{:error, msg},這種回傳的資料格式跟其他語言比起來式獨特的,畢竟在其他語言一般會使用Map或是php的array那種形式來做為資料回傳值,但得益於elixir的模式比較(pattern matching)(之後會提到),這種格式的回傳值在elixir中是易於使用的,並且成為elixir社群開發者的共識。

值得注意的是,Tuple是沒有內置枚舉函式的,因此如果有需要枚舉或是一次處理的資料型態,會建議使用List。Tuple雖然有著類似陣列的資料結構,但他的精神主要是用來儲存有限的資料組。


相關函式:

  1. elem/2 - 用來讀取tuple的元素

以下程式碼對應Javascript的arr = [1, 4, 7, 8, 34] 的 arr[2]

iex(1)> elem({1, 4, 7, 8, 34}, 2)
7
  1. Tuple.to_list(tuple) - 需要把tuple轉乘List結構時(可能需要遍歷時)
iex(1)> Tuple.to_list({1, 4, 6, 78})
[1, 4, 6, 78]
  1. Tuple.append(tuple, value) - 新增值至tuple (類似js Array 的 push)
  2. Tuple.delete_at(tuple, index) - 刪除tuple的值

以上函式的前綴Tuple字樣,是函式的模組名稱。在elixir中,相同功能或是處理同種結構的函式會被包裝在同個模組底下,和OOP中的類別是類似的概念,只是類別的方法是以物件本身為主體,elixir中的模組則是以要處理的資料為主體。



上一篇
Day 3 |> 基本資料型態
下一篇
Day 5 |> 集合資料型態 ( Collection ) - List (串列)
系列文
用Elixir學習後端煉金術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言